#ifndef HEXUTIL_H
#define HEXUTIL_H

#include <QByteArray>
#include <QString>
#include <QTextCodec>

enum class EncodingMode { ASCII, GB2312 };

class HexUtil
{
public:
    // 静态方法，用于将 QByteArray 转换为指定编码的字符串
    static QString convertByteArrayToString(const QByteArray& byteArray, EncodingMode mode);

    // 将十六进制字符串转换为 QByteArray，支持指定分隔符
    static QByteArray hexStringToByteArray(const QString& hexString, const QString& separator = " ");

    // 判断输入的十六进制字符串是否为指定分隔符分割的有效输入
    static bool isValidHexString(const QString& hexString, const QString& separator = " ");

    // 将 QString 转换为 ​GB2312 编码的十六进制字符串，并以 ​空格分隔每个字节​ 的格式输出
    static QString qStringToGb2312HexWithSpaces(const QString& str);

    // 将 QString 转换为 ​ASCII 编码的十六进制字符串​（空格分隔每个字节），并支持自定义非 ASCII 字符处理策略
    static QString qStringToAsciiHexWithSpaces(const QString& str,
                                               bool replaceNonAscii = true,
                                               char replacement = 0x3F);
};

#endif // HEXUTIL_H
